package com.qf.openapi.web.master.controller;

import cn.hutool.core.lang.UUID;
import com.qf.openapi.web.master.entity.User;
import com.qf.openapi.web.master.service.UserService;
import com.qf.openapi.web.master.vo.ResultVo;
import com.qf.openapi.web.master.vo.UserVo;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpSession;
import java.util.Date;

@RestController
@RequestMapping("/user")
@Slf4j //引入日志对象
public class UserController {

    @Autowired
    UserService userService;

    /**
     * 根据用户id查询用户，
     * @param id
     * @return 返回用户的json
     */
    @GetMapping("/get/{id}")
    public User getUser(@PathVariable("id") Integer id){
        return userService.getUser(id);
    }


@PostMapping("/login")
    public ResultVo login(String username, String password, String captchar, HttpSession session){
        //1.打印日志，把web接口收到的参数打印到日志中   {}为站位符
        log.debug("接口入参为:username={},password={},captchar={}",username,password,captchar);
        //1.校验验证码是否正缺
   String sessionCaptcha = (String) session.getAttribute("captcha");
if (sessionCaptcha!=null){
    if (!sessionCaptcha.equals(captchar)){
        //验证码错误，直接返回错误信息
        // ResultVo resultVo = new ResultVo(-1, "验证码错误");
        return ResultVo.error("验证码错误");
    }
}else {
    return ResultVo.error("服务器异常");
}

   //2.查询数据库验证用户名和密码是否匹配
// 如何设service层的方法
// (1)要把处理业务逻辑所需要的参数都传给该方法
// (2) 返回值设计要满足 web接口返回json数据的需求
   User user= userService.login(username,password);
   //3.根据users为null判断登录状态并返回json
    if (user==null){
        //用户密码错误导致的登录失败
       // return new ResultVo(-1,"用户密码错误");
       return ResultVo.error("密码错误");
    }else {
        //登录成功
       // ResultVo vo = new ResultVo(1, "登录成功");
        ResultVo vo = ResultVo.ok();
        vo.put("data",user);

        return vo;

    }

}
    @PostMapping("/regist")
    public ResultVo regist(UserVo userVo, HttpSession session){
//1.打印日志，把web接口收到的参数打印到日志中   {}为站位符
        log.debug("接口入参为:uservo={}",
                userVo);
        //1.校验验证码是否正缺
        String sessionCaptcha = (String) session.getAttribute("captcha");
        if (sessionCaptcha!=null){
            if (!sessionCaptcha.equals(userVo.getCaptchar())){
                //验证码错误，直接返回错误信息
                // ResultVo resultVo = new ResultVo(-1, "验证码错误");
                return ResultVo.error("验证码错误");
            }
        }else {
            return ResultVo.error("服务器异常");
        }
        String prefix = UUID.randomUUID().toString();
        String originalFilename = userVo.getPhoto().getOriginalFilename();
        String fileName=prefix+"-"+originalFilename;


        User user = new User();
        user.setName(userVo.getUsername());
        user.setPassword(userVo.getPassword());
        user.setSex(userVo.getSex());
        user.setBirthday(userVo.getDate());
        user.setRegistTime(new Date());
        user.setPhotopath(fileName);
        if (userVo.getUsername().equals(user.getName())){
            return ResultVo.error("用户名已存在");
        }

      Boolean b= userService.regist(user);
        if (b){
            return ResultVo.ok();
        }else {
            return ResultVo.error("注册失败");
        }


    }

}
